热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Objection.js|SQL友好ORMforNode.js

Objection.js|SQL友好ORMforNode.js

Objection.js | SQL 友好 ORM for Node.js

原文:https://www . geesforgeks . org/objection-js-SQL-friendly-ORM-for-node-js/

Node.js 有很多对象关系映射器(用于关系数据库),我们可以从几个流行的映射器中选择:


  1. 续集

  2. 猫鼬还是普里西玛

  3. type shape(类型)

  4. 反对. js(阅读完整文档此处)

为什么要考虑 Objection.js?
所以这里有几个考虑使用它的理由:


  • 定义模型和它们之间关系的简单方法。

  • 使用节点的异步/等待创建查询。

  • 在模型中使用紧急加载和事务。

  • 在行中处理嵌套文档。

  • 插入和向上插入对象图的强大机制。

  • TypeScript 支持和 JSON 模式验证。

安装和使用 Objection.js 必须遵循以下步骤:

因此,您安装它的方法是使用以下命令安装两个依赖项: knexobjection :

npm i knex -g --save
npm i objection --save

Knex 是一个强大的 SQL 查询生成器(它被一大堆不同的表单使用)。所以在引擎盖下,反对使用 Knex。除了构建 SQL 查询,Knex 还用于建立数据库连接和池连接。它还用于通过迁移来管理数据库模式。

您可能还需要为您想要使用的任何 SQL 数据库安装一个数据库驱动程序。一些不同的选项可用,只需使用以下命令安装它们:

npm i pg
npm i sqlite3
npm i mysql
npm i mariasql

创建数据库:
文件名:app.js

const { Client } = require('pg');
const { db } = require('./config');
const client = new Client();
(async () => {
  await client.connect();
  await client.query(`CREATE DATABASE ${db.connection.database}`);
  await client.end();
})();

创建迁移:


  • 迁移允许您以循序渐进的方式对数据库模式进行更改。

  • “向上”操作应用更改(创建表格、添加/修改列等)。).

  • “向下”操作应用了更改的相反操作(例如,如果迁移的“向上”操作创建了一个表,则相当于“向下”操作将删除该表)。

  • Knex 将创建一个迁移文件夹(除非它已经存在)。

  • 然后,它会在迁移文件夹中为迁移创建一个文件。

knex migrate:make create_tasks_table

生成迁移如下所示:

文件名:empty_migration.js

exports.up = function (knex, Promise) {
};
exports.down = function (knex, Promise) {
};

现在我们可以执行某些操作,比如创建一个表:
文件名:knex_migration.js

const tableName = 'tasks';
exports.up = knex => {
  // Create the tasks table
  return knex.schema.createTable(tableName, table => {
    table.increments('id').primary();
    table.string('name');
    table.date('due_by');
    table.boolean('is_done').defaultTo(false);
    table.timestamps(true, true);
    table.unique(['name']);
  });
};
exports.down = knex => {
  // Drop the tasks table
  return knex.schema.dropTableIfExists(tableName);
};

现在,如果您想要运行它们,那么下面的代码将执行它:

knex migrate:latest

车型:


  • 模型是数据库表的包装器。

  • 它们有助于将业务逻辑封装在这些表中(关系、验证、索引、触发器)。

  • Objection.js 允许您使用 ES6 类创建模型。

一个非常简单的例子如下所示:
文件名:TaskModel.js

// Task Model
const { MODEL } = require('objection');
const db = require('../db');
// Pass he knex connection to Objection
Model.knex(db);
class Task extends Model {
  // Tells objection what the db 
  // table is for the model
  static get tableName() {
    return 'tasks';
  }
}
module.exports = Task;

项目结构如下所示:


  • Simple Select Query:
    Filename: select_query.sql

    js
    SELECT * from tasks;

    可以用:
    完成文件名:objection_select_query.js

    js
    const tasks = await Task.query();


  • Typical SELECT Query:
    Filename: standard_select_query.sql

    js
    SELECT * from tasks WHERE is_dOne= false ORDER BY due_by asc;

    可以用:
    文件名:objection _ standard _ select _ query . js

    js
    const tasks = await Task.query()
    .where({is_done: false}).orderBy('due_by');


  • Insert Query:
    Filename: insert_query.sql

    js
    INSERT INTO tasks (name) VALUES ('Setup Code Coverage');

    可以用:
    完成文件名:objection_insert_query.js

    js
    await Task.query().insert({ name: 'Setup Code Coverage' });


  • Update Query:
    Filename: update_query.sql

    js
    UPDATE tasks SET is_dOne= true WHERE id = 1;

    可以用:
    完成文件名:objection_insert_query.js

    js
    await Task.query().patch({ is_done: true }).where({ id: 1 });


如果我们使用 objection_standard_query.js 文件来检查输出,那么输出将如下所示:

因此,异议查询非常强大且易于使用。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 推荐一个ASP的内容管理框架(ASP Nuke)的优势和适用场景
    本文推荐了一个ASP的内容管理框架ASP Nuke,并介绍了其主要功能和特点。ASP Nuke支持文章新闻管理、投票、论坛等主要内容,并可以自定义模块。最新版本为0.8,虽然目前仍处于Alpha状态,但作者表示会继续更新完善。文章还分析了使用ASP的原因,包括ASP相对较小、易于部署和较简单等优势,适用于建立门户、网站的组织和小公司等场景。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
敏佳的晴__丶天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有